package com.itheima.behavior.controller.v1;

import com.itheima.behavior.service.UserProfileService;
import com.itheima.model.common.dtos.ResponseResult;
import com.itheima.utils.thread.MpThreadLocalUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * 用户画像控制器
 */
@Api(tags = "用户画像API")
@RestController
@RequestMapping("/api/v1/profile")
@Slf4j
public class UserProfileController {

    @Autowired
    private UserProfileService userProfileService;

    /**
     * 获取当前用户画像
     */
    @ApiOperation("获取当前用户画像")
    @GetMapping("/my")
    public ResponseResult getMyProfile() {
        return userProfileService.getMyProfile();
    }

    /**
     * 获取指定用户画像
     */
    @ApiOperation("获取指定用户画像")
    @GetMapping("/{userId}")
    public ResponseResult getUserProfile(
            @ApiParam("用户ID") @PathVariable Integer userId) {
        return userProfileService.getUserProfile(userId);
    }

    /**
     * 刷新当前用户画像
     */
    @ApiOperation("刷新当前用户画像")
    @PostMapping("/refresh")
    public ResponseResult refreshMyProfile() {
        return userProfileService.refreshMyProfile();
    }

    /**
     * 获取当前用户阅读偏好
     */
    @ApiOperation("获取当前用户阅读偏好")
    @GetMapping("/preferences")
    public ResponseResult getMyPreferences() {
        return userProfileService.getMyPreferences();
    }

    /**
     * 获取阅读等级说明
     */
    @ApiOperation("获取阅读等级说明")
    @GetMapping("/levels")
    public ResponseResult getReadingLevels() {
        java.util.List<java.util.Map<String, Object>> levels = new java.util.ArrayList<>();
        
        levels.add(createLevelInfo("初出茅庐", 0, 60, "刚开始阅读之旅"));
        levels.add(createLevelInfo("崭露头角", 60, 300, "养成了阅读习惯"));
        levels.add(createLevelInfo("渐入佳境", 300, 600, "阅读能力不断提升"));
        levels.add(createLevelInfo("炉火纯青", 600, 1200, "已是阅读达人"));
        levels.add(createLevelInfo("登峰造极", 1200, 2400, "阅读大师级别"));
        levels.add(createLevelInfo("一代宗师", 2400, null, "阅读领域的传奇"));
        
        return ResponseResult.okResult(levels);
    }

    /**
     * 创建等级信息
     */
    private java.util.Map<String, Object> createLevelInfo(
            String level, Integer minTime, Integer maxTime, String desc) {
        java.util.Map<String, Object> info = new java.util.HashMap<>();
        info.put("level", level);
        info.put("minTime", minTime);
        info.put("maxTime", maxTime);
        info.put("description", desc);
        return info;
    }
}

